home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 015a / qw12inst.zip / APIBRO.TEC < prev    next >
Text File  |  1991-12-04  |  48KB  |  969 lines

  1. ID:AB  DESQview API General Information
  2. Quarterdeck Technical Note #211
  3. By Jim Susoy
  4.  
  5. In the Quarterdeck view of the world there are three kinds of DOS programs.
  6.  
  7. There's the DESQview-oblivious program, such as 1-2-3 or AutoCAD,written
  8. with no consideration of DESQview, but still compatible with DESQview.
  9.  
  10. There's the DESQview-aware program. It has been modified slightly so that
  11. it runs efficiently in DESQview and concurrently with other programs.
  12. Paradox, DBASE III, DBASE IV, FoxPro and WordPerfect are DESQview-aware.
  13.  
  14. Then there's the DESQview-specific program, like the DESQview Datebook.
  15. It's written to take advantage of DESQview's power. If you look closely,
  16. you'll discover DESQview behind both the ICL North America and IBM/Tridata
  17. point of sale systems, US Data's factory control systems, TRW's title
  18. insurance system, Moody's Investor's Services' bond rating system,
  19. FNN's NewsReal and Novell's Remote Access Server, to name only a few.
  20.  
  21. Hidden deep inside DESQview 2 is a powerful API (Application Program
  22. Interface) that lets programs control and interact with DESQview and with
  23. other programs running in DESQview.  For MIS and DP departments building
  24. workstation solutions, the DESQview API provides enormous benefits. For it
  25. brings OS/2 capabilities (and even OS/2 look and feel if desired) to DOS.
  26. Using the DESQview API, a program can use all the DESQview menu functions
  27. available to the user as well as the power-packed capabilities built
  28. into DESQview multitasking, windowing, intertask communications, mailboxes,
  29. shared programs, memory management, mousing, data transfer, menu-building,
  30. and help.
  31.  
  32. So DOS programs can now act alone or together. Either within a window or
  33. hidden behind one, they can do chores in silence or in chorus, all the while
  34. utilizing the full power of DESQview, all the while bringing you treasures
  35. you only dreamed 'til now were possible.
  36.  
  37. A program taking advantage of the DESQview  API can display information in
  38. windows and control the color, dimensions, position and ordering of windows
  39. on the screen.  It can disable, limit or enhance the standard DESQview user
  40. interface.  Which means that you can have DESQview-like menus in your
  41. program.  Or menu bars and pull-down menus. Or IBM SAA-like menus. It can let
  42. DESQview handle all keyboard and mouse input to menus and forms yet still
  43. process keyboard and mouse input directly when necessary. It can schedule
  44. processing after a certain time interval or at a certain time. It can spawn
  45. subtasks for performing background operations such as printing,
  46. recalculating, and communicating. It can communicate between the various
  47. tasks in the system.
  48.  
  49.  
  50. Multitasking
  51.  
  52. DESQview supports true multitasking of existing DOS programs in addition to
  53. programs written specifically for DESQview. So a user can run multiple
  54. programs (Lotus 1-2-3, DBASE IV and others) and DESQview-specific programs
  55. (DESQview Datebook, Calculator, your own program) concurrently. So a user can
  56. switch to whichever program needs input and switch away while the program
  57. recalculates or sorts in background.
  58.  
  59. Under DESQview, each program runs in its own "virtual machine", thinking it
  60. has exclusive access to DOS, the keyboard, etc. DESQview calls these virtual
  61. machines "processes". DESQview calls the portion of a process that keeps
  62. track of which instruction to execute next and what the register contents
  63. are a "task" (or "thread"). Every program running under DESQview consists,
  64. initially, of a single process running a single task.
  65.  
  66. DESQview-specific programs may create additional tasks within their own
  67. processes and additional processes. Additional tasks allow a portion of your
  68. program, the part that controls the printer for example, to be run in
  69. background. Additional processes allow whole new programs to be loaded and
  70. run concurrently.
  71.  
  72.  
  73. Presentation Management
  74.  
  75. Because DESQview lets you run more than one program at a time, DESQview
  76. provides a way to view more than one program at a time on the screen.
  77. DESQview does this by mapping each program into its own "window" and by
  78. managing the display of multiple windows on the screen. To DESQview, windows
  79. are rectangular areas of displayable information. They may be moved, resized,
  80. colored, and reordered by either the user or by your program. Everything that
  81. is displayed on the screen under DESQview is displayed in a window.
  82.  
  83. Multiple windows are not only useful for displaying several programs
  84. simultaneously, but may also be used within a single program to display
  85. menus, help screens, error messages. DESQview provides facilities for storing
  86. complete descriptions of such windows, (known by DESQview as "panels"), on
  87. disk or in your program and displaying them with a single call to the API.
  88. These panels may be as simple as one-line error messages or as complex as
  89. data entry forms with multiple-choice and data entry fields.
  90.  
  91. Once a panel has been displayed, your program can ask DESQview's "field
  92. manager" to process all user input to the panel including mousing and data
  93. entry editing. The field manager returns the results to your program in a
  94. simple, field-oriented format, independent of the appearance of the panel.
  95.  
  96. The use of panels and the field manager not only simplifies the job of
  97. programming an application, but gives a consistency to the user interface
  98. that makes the learning of new applications easier.
  99.  
  100. Intertask Communications
  101.  
  102. So that DESQview-specific programs can rapidly exchange information, DESQview
  103. provides a wide range of intertask communications facilities. These
  104. facilities allow several concurrently running tasks to exchange information
  105. or signals, to lock access to common resources, to share common code and
  106. data, and to interrupt each other to handle critical events. These tasks can
  107. be in either the same or in different processes.
  108.  
  109. Intertask communication is the key to building complex applications in a
  110. multitasking environment. Let's say, for example, you are building a point of
  111. sale system, that handles a dozen cash registers for a department store.
  112. Using DESQview you could break your application up into fourteen tasks; one
  113. for each of the cash registers, one to handle access to the pricing data-base
  114. and one to track sales and generate management reports. The cash register
  115. tasks would process keystrokes from the clerk until an item price is needed.
  116. They would then send a message to the database task requesting the price. The
  117. database task would log the sale and return the price to the sender of the
  118. request.  Meanwhile, the store manager could interact with the reporting task
  119. to monitor sales, clerk performance, etc.
  120.  
  121.  
  122. Data Transfer
  123.  
  124. DESQview supports two types of user-initiated data transfer. The first,
  125. called Mark &Transfer, lets a user mark text in any window and transfer
  126. that text to any other application. The application receiving the
  127. data can be DESQview-oblivious, seeing the data as normal keyboard
  128. input.
  129.  
  130. More sophisticated transfers are possible between DESQview-specific
  131. applications that support the DESQview Scissors command. When the
  132. user marks data in such an application, DESQview notifies the application
  133. that data has been requested and lets the application determine exactly
  134. what data to supply. The application may supply anything including
  135. text, formulas, or even graphics images. When the user instructs DESQview
  136. to Paste the data into another application, that application is also
  137. notified so that the data can be handled appropriately.
  138.  
  139. The applications involved in a Scissors transfer can even use DESQview's 
  140. intertask communication facilities to setup a "hot-link" between them-
  141. selves so that subsequent changes to the data are automatically reflected 
  142. in both applications.
  143.  
  144.  
  145. Memory Management
  146.  
  147. Programs running under DOS are typically given all of a PC's memory 
  148. to do with as they please. In a multitasking environment, memory must 
  149. be managed so that more than one program can be loaded at a time and 
  150. so that no single program is given more memory than it needs. DESQview 
  151. provides this management in a way that adapts to the type of memory 
  152. hardware available on your PC.
  153.  
  154. If your PC has 640K of conventional memory, DESQview is able to multitask 
  155. as many programs as will fit in memory at the same time. Additional 
  156. programs can be loaded but will cause the least recently used programs 
  157. to be suspended and swapped to disk to make room in memory for the 
  158. new ones. 
  159.  
  160. If your PC is a 286-based system with extended memory, DESQview can 
  161. still only multitask the programs that fit in 640K. Additional programs 
  162. open can be swapped either to RAM disk, as well as to the user's local 
  163. disk or network disk. DESQview is also capable of running 60K of itself 
  164. in extended memory<197>thus reducing its DOS conventional memory overhead.
  165. If you have EMS 3.2 (Lotus-Intel-Microsoft Expanded Memory), DESQview 
  166. will swap programs to expanded memory instead of to disk. This is 
  167. so much faster than swapping to disk that the swap time is almost 
  168. not noticeable.
  169.  
  170.  
  171. If your PC has EMS 4.0 or EEMS (AST-Quadram-Ashton Tate Enhanced Expanded
  172. Memory) or a 386-based PC with an EMS 4.0 driver, DESQview can actually
  173. multitask as many programs as will fit in conventional and expanded memory.
  174. This can be as high as 32-megabytes worth of programs. DESQview can also run
  175. a large part of itself in expanded memory, giving a much larger maximum
  176. program size.
  177.  
  178. Furthermore, DESQview can actually run both 286 or 386 DOS Extended 
  179. programs simultaneously with your other DOS programs. DOS Extended 
  180. programs are programs, such as 1-2-3 Release 3, IBM Interleaf, AutoCAD 
  181. 386, Paradox 386, which have been written to take advantage of either 
  182. the 16-bit protected mode of the 80286 processor or the 32-bit protected 
  183. mode of the 80386 processor. It is important to note that for DESQview 
  184. to be able to run DOS Extended programs, the DOS Extender must conform 
  185. to the PharLap/Quarterdeck VCPI (Virtual Control Program Interface) 
  186. specification which specifies how protected mode programs and 80386 
  187. control programs can work together. With most DOS Extenders, you also 
  188. get the added benefit of virtual memory support automatically built 
  189. into the program a significant benefit if your users have limited 
  190. memory.
  191.  
  192.  
  193. Customization
  194.  
  195. Although DESQview is best known for its ability to run off-the-shelf 
  196. software concurrently, DESQview is an ideal platform for developing 
  197. customized vertical market applications and workstations. 
  198.  
  199. DESQview's intertask communications and shared program and data capabilities,
  200. coupled with its support of expanded memory, give developers efficient 
  201. and cost effective techniques for developing large programs that can 
  202. still run on DOS and thus on the large installed base of DOS PCs.
  203.  
  204. In addition to providing multitasking and windowing services, 
  205. DESQview can be custom-ized to provide the user interface appropriate 
  206. to a particular application.  This customization can take the form of
  207. restricting access to certain DESQview menus, taking special action when
  208. certain menu items are selected, or, in the extreme, disabling all access to
  209. DESQview menus and providing the entire user interface as part of the
  210. application. 
  211.  
  212. In this latter case, the only part of DESQview that the user sees 
  213. is a copyright screen during start-up. DESQview also includes a keystroke
  214. macro capability enabling you to create built-in macros for each application
  215. running as well as global macros which combine actions from several programs.
  216.  
  217.  
  218. Portability
  219.  
  220. DESQview with its entire API runs on 8088, 8086, 80286, 80386 and 
  221. 80486i PCs as well as the IBM Personal System/2s with monochrome, 
  222. CGA, EGA, VGA or Hercules display adapters. Additionally, Wyse 700 
  223. and Micro Display System Genius adapters are available from Quarterdeck. 
  224. This means that an application that you write to be DESQview-specific 
  225. can run on any PC from a laptop dual-floppy PC to the very latest 
  226. 486-based PC. It can even run over a network on a diskless PC. 
  227. Thus, the market for your DESQview-specific application extends to 
  228. the entire base of existing and future DOS PCs. 
  229.  
  230.  
  231. API Details
  232.  
  233. In order for you to get a feel for the power built-in to each and 
  234. every DESQview, we've included a short description about each API 
  235. command. 
  236.  
  237. The DESQview API is an object-oriented interface. The data structures 
  238. DESQview uses to represent windows, mailboxes, etc. are called "objects". 
  239. A call to the API involves "sending a message" to an object, indicating 
  240. which of several operations you want performed on that data structure. 
  241. This is referred to as the "send interface." Almost the entire API 
  242. consists of sending one of 25 messages to one of 7 different object 
  243. types.
  244.  
  245. The DESQview API also has a non-object-oriented interface called the 
  246. "direct call interface". This is the small subset of API functions 
  247. that are not, by nature, object oriented or that are convenient alternatives 
  248. to the send interface.
  249. The DESQview API has a concise way of encoding a complete description 
  250. of a window so that a single call to the API can create the window, 
  251. fill it with the desired information, size and position it on the 
  252. display, and define fields that interact with the user. All this is 
  253. done using "Window Streams".
  254.  
  255. So that you can interrogate a window for its current 
  256. contents, position, etc., the DESQview 2 API also has "Query Streams." 
  257. In fact, any window parameter that can be set by a Window Stream can 
  258. be read by a Query Stream.
  259.  
  260. DESQview calls the portion of itself that interfaces with the user 
  261. the "Window Manager." Each time a user presses the DESQ key (normally 
  262. the Alt key) and makes a menu selection, it is the Window Manager 
  263. that opens, switches, rearranges and closes windows, transfers data, 
  264. displays help, or quits DESQview. In order for an application to have 
  265. the same power as the user, the DESQview API has "Manager Streams." 
  266. Manager Streams enable an application to interact with the Window 
  267. Manager. 
  268.  
  269. Using Manager Streams an application can, for example, ask the Window 
  270. Manager to make one of its windows the topmost window in the system, 
  271. disallow any resizing of  the window by the user, and even notify 
  272. the application if the user tries to close the window. Using Manager 
  273. Streams an application can disallow use of the DESQview menu and DESQview 
  274. submenus.
  275.  
  276. But, there's still even more to the DESQview API. DESQview provides 
  277. a comprehensive set of functions for simplifying the job of interfacing 
  278. with the user. Instead of dealing with user input a single character 
  279. at a time, your application can present entire menus, dialogue boxes, 
  280. help screens to DESQview and get back the resulting user input. Common 
  281. functions such as cursor control, insertion and deletion of characters, 
  282. tracking the mouse, and selection from option lists are performed 
  283. by DESQview. DESQview performs these functions under control of a 
  284. data structure called the "Field Table.."
  285. Information about a window's size, position, contents and Field Table 
  286. can be combined together into "Panels." Panels can be stored on disk 
  287. or in memory for later display. Panels can be constructed manually 
  288. or via the DESQview API Panel Design Tool.
  289.  
  290.  
  291. DESQview 2 API Commands:
  292.  
  293. Send Interface Commands
  294.  
  295. WINDOW Objects
  296.  
  297. ADDTO     write characters & attributes to a window
  298. AT        position the logical cursor
  299. CONNECT   connect one window to another window
  300. EOF       return TRUE if cursor is past end window
  301. ERASE     clear a window
  302. FREE      close and free a window or a task
  303. HANDLE    return handle of current task's window
  304. LEN       return # characters/line in logical window
  305. NEW       create a new window or task
  306. OPEN      fill a window with a given character
  307. READ      read the next logical line from a window
  308. READN     read the next n characters/attributes
  309. REDRAW    redraw a window
  310. SIZEOF    return total # characters/logical window
  311. SUBFROM   write attributes to a window
  312. WRITE     write characters and/or command streams
  313.  
  314. KEYBOARD Objects
  315.  
  316. ADDTO     set individual keyboard control flags
  317. CLOSE     close a keyboard object
  318. ERASE     discard all input queued to keyboard
  319. FREE      free a keyboard object
  320. GETFLAGS  get keyboard control flags
  321. GETPRI    get objectq priority level of keyboard
  322. HANDLE    return handle of task's default keyboard
  323. NEW       create a new keyboard object
  324. OPEN      attach a keyboard to a window
  325. READ      get the next input from the keyboard
  326. SETESC    intercept keystrokes to input fields
  327. SETFLAGS  set/clear all keyboard control flags
  328. SETPRI    set objectq priority level of keyboard
  329. SIZEOF    return # of input buffers queued
  330. STATUS    get the scan code for the last key read
  331. SUBFROM   clear individual keyboard control flags
  332. WRITE     add input buffer to keyboard queue
  333.  
  334. MAILBOX Objects
  335.  
  336. ADDR      return sender of the last message READ
  337. ADDTO     send a message and status by value
  338. CLOSE     close a mailbox
  339. ERASE     discard all queued messages
  340. FREE      free a mailbox
  341. GETFLAGS  get mailbox control flags
  342. GETPRI    get objectq priority level of mailbox
  343. HANDLE    return handle of task's default mailbox
  344. LOCK      request exclusive access to a resource
  345. NEW       create a new mailbox
  346. OPEN      open a mailbox for input
  347. READ      get the next message from the queue
  348. SETFLAGS  set/clear all mailbox control flags
  349. SETNAME   assign a name to a mailbox
  350. SETPRI    set objectq priority level of mailbox
  351. SIZEOF    return the # of messages in the queue
  352. STATUS    return status of the last message READ
  353. SUBFROM   send a message & status by reference
  354. WRITE     send a message by value with status=0
  355.  
  356. OBJECTQ Objects
  357.  
  358. CLOSE     close an objectq
  359. ERASE     remove all objects from the queue
  360. HANDLE    return the handle of a task's objectq
  361. OPEN      open the objectq
  362. READ      wait for input from any open object
  363. SIZEOF    return the number of objects queued
  364. STATUS    return whether or not objectq is open
  365. SUBFROM   remove specific object from queue
  366. WRITE     add an object to the objectq
  367.  
  368. PANEL Objects
  369.  
  370. APPLY     display a particular panel
  371. CLOSE     close a panel object
  372. DIR       return a pointer to the panel directory
  373. FREE      free a panel object
  374. NEW       create a panel object
  375. OPEN      associate panel object with a panel file
  376. SIZEOF    return the # of panels in a panel file
  377. STATUS    verify success of an OPEN or APPLY
  378.  
  379. POINTER Objects
  380.  
  381. ADDTO     set pointer control flags
  382. CLOSE     stop taking pointer input
  383. ERASE     discard all pointer messages
  384. FREE      free a pointer object
  385. GETFLAGS  get pointer control flags
  386. GETPRI    get objectq priority level of pointer
  387. GETSCALE  return the current scaling factors
  388. NEW       create a new pointer object
  389. OPEN      start taking pointer input for window
  390. READ      wait for the next pointer message
  391. SETFLAGS  replace pointer control flags
  392. SETPRI    set objectq priority level of pointer
  393. SETSCALE  set the current scaling factors
  394. SIZEOF    return the number of messages queued
  395. STATUS    return the status of the last message
  396. SUBFROM   reset pointer control flags
  397. WRITE     move the pointer to a specified position
  398.  
  399. TIMER Objects
  400.  
  401. ADDTO     start a timer for a specified interval
  402. CLOSE     close a timer object
  403. ERASE     cancel the current timer interval
  404. FREE      free a timer object
  405. GETPRI    get objectq priority level of timer
  406. LEN       return time remaining before expiration
  407. NEW       create a new timer object
  408. OPEN      open a timer object
  409. READ      wait for the current timer to expire
  410. SETPRI    set objectq priority level of timer
  411. SIZEOF    return elapsed time since timer started
  412. STATUS    return the status of the timer object
  413. WRITE     start a timer to end at a specified time
  414.  
  415. Direct Call Interface Commands
  416.  
  417. APILEVEL  define minimum API level required
  418. APPNUM    get the current application's number
  419. ASSERTMAP get current mapping context & set new
  420. BEGINC    begin critical region
  421. CSTYLE    use C language style control codes
  422. DBGPOKE   poke debug information onto display
  423. DISPEROR  display an error message window
  424. DVPRESENT determine if DESQview is present
  425. ENDC      end critical region
  426. FINDMAIL  find a mailbox by name
  427. FREEBIT   undefine second-level interrupt handler
  428. GETBIT    define a second-level interrupt handler
  429. GETBUF    get address of a Logical Window Buffer
  430. GETCRIT   get critical region nesting level
  431. GETERROR  get error handling level of current task
  432. GETMEM    allocate buffer from System Memory
  433. ISOBJ     determine if a handle is valid
  434. JUSTIFY   turn off/on automatic justification
  435. KMOUSE    control the keyboard mouse
  436. LOCATE    find window at given screen location
  437. NEWPROC   start a new process
  438. OBJTYPE   determine object type of a given handle
  439. OSTACK    switch to task's internal stack
  440. PAUSE     relinquish control to other tasks
  441. PGMINT    interrupt another task
  442. POSTTASK  awaken task by posting its Objectq
  443. POSWIN    position a window on the display
  444. PRINTC    display a character in a window
  445. PUSHKEY   push key into keyboard input stream
  446. PUTMEM    free a buffer allocated by GETMEM
  447. SETBIT    schedule a second-level interrupt handler
  448. SETERROR  set error handling level of current task
  449. SHADOW    get window buffer and start shadowing
  450. SOUND     make a sound
  451. START     start a task that was previously stopped
  452. STOP      stop a task until START is called
  453. UPDATE    update a portion of a window
  454. USTACK    switch off task's internal stack
  455.  
  456.  
  457. Window Stream & Query Stream Commands
  458.  
  459. 00 to 9F  print strings (attrib,char,blanks) to window
  460.  
  461. A0 to CF  change size/ position of a window
  462.  
  463. D0 to DF  set options for appearance of window: frames,color,show/hide
  464. window,            display of control characters
  465.  
  466. E0 to EF  perform immediate actions:clearing,scrolling recoloring,
  467.           redrawing window;create  new windows & repeat command sequences
  468.  
  469. F0 to FF  define, read, write fields within window.
  470.  
  471.  
  472. Manager Streams
  473.  
  474. 00 to 3F  Allows specific DESQview commands:
  475.           move & resize window, scroll data, hide
  476.           rearrange program, suspend application, 
  477.           display DESQview menu
  478.  
  479. 40 to 71  notify application on specific DV commands.
  480.  
  481. 84 to 8B  specify environment of window: suspend
  482.           application when it is in background, set
  483.           application's asynchronous notification.
  484.  
  485. AE to BF  enable/disable DESQview extensions.
  486.  
  487. C0 to FF  reorder, hide, unhide, suspend resume
  488.           applications.
  489.  
  490.  
  491. C, Pascal, BASIC, Clipper & dBASE
  492. Listed below are API Interfaces available with each DESQview API library.
  493.  
  494.  
  495. C - C 
  496. P - Pascal
  497. B - Basic
  498. R - Clipper
  499. D - dBase
  500.  
  501.       General Functions
  502. CPBRD
  503. -----
  504. YYYYY api_beginc       begin critical region 
  505. YYYYY api_cancel       cancel current Window Mgr operation 
  506. YYYY  api_commonmem    get status of Common Memory 
  507. YYYY  api_convenmem    get status of Conventional Memory 
  508.    Y  api_curdrive     get the current default drive 
  509.    Y  api_dec          convert hex string to unsigned decimal # 
  510. YY Y  api_dvpresent    determine if DESQview is present 
  511. YYYYY api_endc         end critical region
  512. YYYY  api_enterc       begin critical region w/o waiting for DOS 
  513. YYYYY api_exit         exit API interface 
  514. YYYY  api_expandmem    get status of Expanded Memory 
  515. YY Y  api_freebit      disconnect 2nd level interrupt handler 
  516. YY Y  api_getbit       define 2nd level interrupt handler 
  517. YYYYY api_getcommon    get Common Memory buffer 
  518. YYYYY api_getcrit      get critical region nesting level 
  519. YYYYY api_getmem       get System Memory buffer 
  520.    Y  api_hex          convert decimal # to hexadecimal string 
  521.    Y  api_hexaddr      convert addr to string in seg:off hex form 
  522. YYYYY api_init         initialize API interface & return version of DESQview 
  523.   Y   api_interactive  determine if in BASIC interactive environment 
  524. YYYYY api_isobj        determine if a given handle is valid 
  525.    Y  api_isset        determine if given bit is set within a specified byte 
  526. YYYYY api_justify      enable/disable automatic justification of task window 
  527. YYYYY api_kmouse       turn keyboard mouse on and off 
  528. YYYYY api_level        define API revision level that application requires 
  529. YYYYY api_objtype      determine object type of a given handle 
  530. YYYYY api_pause        give other tasks a chance to run 
  531. YYYYY api_poke         display debug info on bottom line of screen 
  532. YYYY  api_processmem   get status of app's Process Memory 
  533. YYYYY api_pushkey      push key into input stream 
  534. YYYY  api_putcommon    return Common Memory buffer 
  535. YYYY  api_putkey       put key into an application's input stream 
  536. YYYY  api_putmem       return System Memory buffer 
  537.    Y  api_read         read from DV-owned memory buffer 
  538. YY Y  api_setbit       schedule a 2nd level interrupt handler 
  539. YY Y  api_shadow       get task's logical window buffer & start shadowing 
  540. YYYYY api_sound        make a sound 
  541. YY Y  api_update       redraw portion of a task's logical window 
  542.    Y  api_write        write to DESQview-owned memory buffer
  543.  
  544.  
  545.       Application Management Functions
  546. CPBRD
  547. -----
  548. YYYYY app_foreonly     indicate whether app can run in background 
  549. YYYYY app_free         free an application and its window 
  550. YYYYY app_goback       force an application into background 
  551. YYYYY app_gofore       force an application into foreground 
  552. YYYYY app_hide         hide all windows of an application 
  553. YYYY  app_new          start a new app in the current process 
  554. YYYYY app_number       get the current app's Switch number  
  555.    Y  app_run          execute DOS command in new process 
  556. YYYYY app_show         display all windows of an application 
  557. YYYYY app_start        start a new application in a new process 
  558. YYYYY app_suspend      suspend and hide all tasks in an app
  559.       
  560.       
  561.       Field Management Functions 
  562. CPBRD
  563. -----
  564. YYYYY fld_altmode      set Alternate Field Processing mode 
  565.    Y  fld_atget        input data at specified field position 
  566.    Y  fld_atprompt     paint menu prompts & define msg at fld
  567.    Y  fld_atsay        display data at specified field 
  568. YYYYY fld_attr         fill a field with a given attribute 
  569. YYYYY fld_char         fill a field with a given character 
  570. YYYYY fld_clear        clear a field 
  571. YYYYY fld_cursor       move cursor to a field 
  572. YYYYY fld_entry        change field table entry 
  573. YYYYY fld_header       change field table header 
  574.  YYY  fld_lentry       load field table entry of field table window stream 
  575.  YYY  fld_lheader      load field table header of field table window stream 
  576. YYYYY fld_marker       define selected-field marker character 
  577. YYYYY fld_point        move pointer to a given position in a field 
  578. YYYYY fld_protattr     set Protected Attrib field processing mode  
  579. YYYYY fld_reset        reset selected and modified bits 
  580. YYYYY fld_scroll       scroll a field 
  581.  YYY  fld_stream       allocate string space for field table window stream 
  582. YYYYY fld_type         change the type of a field 
  583. YYYYY fld_write        write a string into a field
  584.       
  585.       
  586.       Keyboard Management Functions 
  587. CPBRD
  588. -----
  589.    Y  key_accept       enter a string into a memory variable 
  590. YYYYY key_addto        set keyboard control flags 
  591.    Y  key_clear        empty keyboard type ahead buffer 
  592.    Y  key_clkey        convert DV key code to Clipper key code 
  593. YYYYY key_close        disconnect keyboard from its window 
  594.    Y  key_dvkey        convert Clipper key code to DV key code 
  595. YYYYY key_erase        discard pending keyboard input 
  596. YYYYY key_free         free a keyboard object 
  597. YYYYY key_getc         wait for next key (keystroke mode) 
  598. YYYYY key_getflags     get keyboard control flags 
  599. YYYYY key_getpri       get priority level of keyboard in objectq 
  600.   YY  key_inkey        read a character from keyboard 
  601.    Y  key_input        enter an expression into a memory variable 
  602.    Y  key_keyboard     stuff keyboard buffer with a string 
  603.    Y  key_lastkey      determine last key fetched from keybd 
  604. YYYYY key_me           get current task's keyboard handle 
  605.    Y  key_nextkey      read the next key from keyboard 
  606. YYYYY key_new          create a new keyboard object 
  607. YYYYY key_of           get handle of a given task's keyboard 
  608. YYYYY key_open         attach keyboard to a given window 
  609. YYYY  key_owner        get owner of a given keyboard 
  610. YYYYY key_read         read input from keyboard 
  611.    Y  key_readinsert   return the current insert mode setting 
  612.    Y  key_readlast     read DV key code in key_lastkey buffer 
  613.    Y  key_setcursor    determine if hardware cursor displayed 
  614. YYYY  key_setesc       define function to filter keys in fld mode 
  615. YYYYY key_setflags     replace keyboard control flags 
  616. YYYYY key_setpri       set priority level of kbd in task's objectq 
  617. YYYYY key_sizeof       get # keyboard messages pending 
  618. YYYYY key_status       get status of last keyboard message 
  619. YYYYY key_subfrom      clear keyboard control flags 
  620.    Y  key_wait         suspend task until a key is pressed 
  621. YYYYY key_write        write string to keyboard 
  622.    Y  key_writelast    write DV key code into 
  623.       
  624.       
  625.       Mailbox Management Functions
  626. CPBRD
  627. -----
  628. YYYYY mal_addr         return sender of last message 
  629. YYYYY mal_addto        send a message by value with given status 
  630. YYYYY mal_close        close a mailbox 
  631. YYYYY mal_erase        erase all pending messages 
  632. YYYYY mal_find         find a mailbox by name 
  633. YYYYY mal_free         free a mailbox object 
  634. YYYY  mal_getflags     get mailbox control flags 
  635. YYYY  mal_getpri       get priority level of mailbox in objectq 
  636. YYYYY mal_lock         lock access to a resource 
  637. YYYYY mal_me           get handle of current task's mailbox 
  638. YYYYY mal_name         assign a global name to a mailbox 
  639. YYYYY mal_new          create a new mailbox 
  640. YYYYY mal_of           get handle of a given task's mailbox 
  641. YYYYY mal_open         open a mailbox 
  642. YYYY  mal_ownerget     owner of a given mailbox 
  643. YYYYY mal_read         wait for next message 
  644. YYYY  mal_setflags     replace mailbox control flags 
  645. YYYY  mal_setpriset    priority level of mailbox in task's objectq 
  646. YYYYY mal_sizeof       get # messages pending 
  647. YYYYY mal_status       get status of last message received 
  648. YYYY  mal_subfrom      send msg by reference w given status 
  649. YYYYY mal_unlock       unlock access to a resource 
  650. YYYYY mal_write        send a message by value with status zero
  651.       
  652.       
  653.       Objectq Management Functions
  654. CPBRD
  655. -----
  656. YYYYY obq_close        close the task's objectq 
  657. YYYYY obq_erase        erase contents of the task's objectq 
  658. YYYYY obq_open         open the task's objectq 
  659. YYYYY obq_read         wait for any object to have input 
  660. YYYYY obq_sizeof       get # of objectq entries pending 
  661. YYYYY obq_status       determine if the task's objectq is open 
  662. YYYYY obq_subfrom      remove copies of object handle from task's objectq 
  663. YYYYY obq_write        add an object handle to task's objectq
  664.       
  665.       
  666.       Panel Management Functions 
  667. CPBRD
  668. -----
  669. YYYYY pan_apply        display a named panel & prepare for input 
  670. YYYYY pan_close        close a panel file 
  671. YYYY  pan_dir          get list of panels in the panel file 
  672. YYYYY pan_free         free a panel object 
  673. YYYYY pan_new          create a panel object 
  674. YYYYY pan_open         open a panel file 
  675. YYYY  pan_owner        get owner of a given panel 
  676. YYYY  pan_sizeof       get # panels in the panel file 
  677. YYYYY pan_status       get status of last pan_open or pan_apply
  678.       
  679.       
  680.       Pointer Management Functions
  681. CPBRD
  682. -----
  683. YYYYY ptr_addto        set pointer control flags 
  684. YYYYY ptr_close        close a pointer object 
  685. YYYYY ptr_erase        erase pending pointer messages 
  686. YYYYY ptr_free         free a pointer object 
  687. YYYYY ptr_getflags     get pointer control flags 
  688. YYYYY ptr_getpri       get priority level of pointer in objectq 
  689. YYYYY ptr_getscale     get current scaling factors 
  690. YYYYY ptr_new          create a new pointer object 
  691. YYYYY ptr_open         open pointer and assign to a window 
  692. YYYY  ptr_owner        get owner of a given pointer 
  693. YYYYY ptr_read         wait for next pointer message 
  694. YYYYY ptr_setflags     replace pointer control flags 
  695. YYYYY ptr_setpri       set priority level of ptr in task's objectq 
  696. YYYYY ptr_setscale     set current scaling factors 
  697. YYYYY ptr_sizeof       get # messages pending 
  698. YYYYY ptr_status       get button status from last message received 
  699. YYYYY ptr_subfrom      clear pointer control flags 
  700. YYYYY ptr_write        move the pointer to a given position
  701.       
  702.       
  703.       Query Functions
  704. CPBRD
  705. -----
  706. YYYYY qry_atread       TRUE if win_read and win_readn will read attributes 
  707. YYYYY qry_attrget      current output attribute 
  708. YY Y  qry_col          get current cursor column position 
  709. YYYYY qry_color        get physical attribute for given logical attribute
  710. YYYYY qry_ctrl         TRUE if processing control codes 
  711. YYYYY qry_cursor       get current cursor position 
  712. YYYY  qry_dosuser      get handle of task currently using DOS 
  713. YYYYY qry_entry        get field table entry 
  714. YYYYY qry_field        get contents of a field 
  715. YYYY  qry_flength      get length of a field 
  716. YYYYY qry_frame        TRUE if the window has a frame 
  717. YYYYY qry_frattr       get current frame attribute 
  718.    Y  qry_ftable       get field table window stream 
  719. YYYYY qry_header       get field table header 
  720. YYYYY qry_hidden       TRUE if the window is hidden 
  721. YYYYY qry_kmouse       TRUE if using a keyboard mouse 
  722. YYYYY qry_leave        TRUE if leaving attributes untouched when writing to     
  723.                    window
  724. YYYYY qry_logattr      TRUE if using logical attributes 
  725. YYYYY qry_lsize        get size of logical window buffer 
  726. YYYYY qry_origin       get origin of physical relative to logical window 
  727. YYYYY qry_position     get position of physical window 
  728. YY Y  qry_row          get current cursor row position 
  729. YYYY  qry_scrninfo     get current size & video mode of screen 
  730. YYYYY qry_size         get size of physical window 
  731. YYYYY qry_title        get window's title 
  732. YYYYY qry_type         get type of field
  733.       
  734.       
  735.       Text File Device Driver Functions
  736. CPBRD
  737. -----
  738.  Y    tfd_attach       attach a given window to TFDD 
  739.  Y    tfd_close        close TFDD 
  740.  Y    tfd_lock         lock access to TFDD 
  741.  Y    tfd_open         open TFDD and attach given window 
  742.  Y    tfd_unlock       unlock access to TFDD
  743.       
  744.       
  745.       Timer Management Functions
  746. CPBRD
  747. -----
  748. YYYYY tim_addto        start a timer for a given interval 
  749. YYYYY tim_close        close a timer object 
  750. YYYYY tim_erase        stop a running timer 
  751. YYYYY tim_freefree     a timer object 
  752. YYYYY tim_getpriget    priority level of timer in objectq 
  753. YYYYY tim_len          get time remaining until timer expires 
  754. YYYYY tim_newcreate    a new timer object 
  755. YYYYY tim_openopen     a timer object 
  756. YYYY  tim_owner        get owner of a given timer 
  757. YYYYY tim_read         wait for timer to expire 
  758. YYYYY tim_setpri       set priority level of timer in task's objectq 
  759. YYYYY tim_sizeofget    time since a timer started running 
  760. YYYYY tim_status       determine if a timer is running 
  761. YYYYY tim_write        start a timer for a given time of day
  762.       
  763.       
  764.       Task Management Functions
  765. CPBRD
  766. -----
  767. YY Y  tsk_dispatchint  software interrupt another task at a "safer" time 
  768. YYYYY tsk_free         free a task and its window 
  769. YYYYY tsk_geterrorget  error handling level of current task 
  770. YYYY  tsk_me           get handle of current task 
  771. YY Y  tsk_new          create a new task 
  772. YY Y  tsk_pgmint       software interrupt another task 
  773. YYYY  tsk_owner        get owner of a given task 
  774. YYYYY tsk_post         restart a task waiting on its objectq 
  775. YYYYY tsk_seterror     set error handling level of current task 
  776. YYYYY tsk_start        restart a stopped task 
  777. YYYYY tsk_stop         temporarily stop a task
  778.       
  779.       
  780.       Window Management Functions 
  781. CPBRD
  782. -----
  783.    Y  win_achoice      execute a pop-up menu in a window 
  784. YYYYY win_addto        write characters & attributes to a window 
  785. YYYYY win_adopt        adopt a window 
  786. YYYYY win_allow        specify which DV commands are allowed 
  787. YY Y  win_async        define asynchronous notify function 
  788.    Y  win_atbox        draw a box in a window 
  789.    Y  win_atclear      clear rectangular region of window 
  790.    Y  win_atget        input data at specified window position 
  791.    Y  win_atprompt     paint menu prompts & define messages of window
  792. YYYYY win_atread       set read mode to read either character or attribute 
  793.    Y  win_atsay        display data at specified window position 
  794. YYYY  win_attach       attach/detach window to parent task window 
  795.    Y  win_atto         draw single or double line box in window 
  796. YYYYY win_attr         set current output attribute 
  797. YYYYY win_blanks       write blanks to a window 
  798. YYYYY win_bottom       make window bottommost in its application
  799.    Y  win_browse       browse & edit records within a window 
  800. YYYY  win_buffer       get address of logical window buffer
  801. YYYYY win_cancel       cancel notification on a given event 
  802.    Y  win_clear        clear a window and home the cursor 
  803.    Y  win_clcolor      convert DESQview physical attribute to Clipper color     
  804.                    code 
  805.    Y  win_cleargets    release all of window's pending gets 
  806.    Y  win_clscroll     scroll window region up, down or blank out 
  807. YYYYY win_color        change logical attribute mapping 
  808. YYYY  win_connect      attach window to another window 
  809. YYYYY win_ctrl         enable/disable interpretation of control characters 
  810. YYYYY win_cursor       move window's logical cursor 
  811.    Y  win_dbedit       browse records in a table layout 
  812. YYYYY win_dflt         change default notify window 
  813. YYYYY win_disallow     specify which DV commands are not allowed 
  814. YYYYY win_disperor     display an error message window 
  815.    Y  win_dvattr       convert Clipper color code to DESQview physical          
  816.                    attribute 
  817. YYYYY win_eof          TRUE if logical cursor is beyond end of window 
  818. YYYYY win_erase        clear a window 
  819. YYYYY win_frame        enable/disable display of a window's frame 
  820. YYYYY win_frattr       define window frame attribute 
  821. YYYYY win_free         remove a window from screen and free its handle 
  822. YYYYY win_hcur         display hardware cursor at logical cursor position
  823. YYYYY win_hide         mark a window as hidden 
  824. YYYYY win_leave        leave existing attribute when writing to window 
  825. YYYYY win_len          return width of logical window 
  826. YYYYY win_locate       return which window is visible at given screen           
  827.                    position 
  828. YYYYY win_logattr      use logical/physical attributes 
  829. YYYYY win_lsize        set window's logical dimensions 
  830.    Y  win_mark1/2      display result of an expression in specified window 
  831. YYYYY win_maxsize      set window's max physical dimensions 
  832. YYYYY win_me           get current task's window handle 
  833.    Y  win_menuto       execute light-bar menu for defined prompts in a window
  834. YYYYY win_minsize      set window's min physical dimensions 
  835. YYYYY win_move         move physical window 
  836. YYYYY win_new          create a new window 
  837. YYYYY win_notify       enable notification on a given event 
  838. YYYYY win_nread        read n characters from a window 
  839. YYYYY win_open         fill a window with a given character 
  840. YYYYY win_origin       define portion of logical window viewed in physical      
  841.                    window
  842. YYYYY win_orphan       orphan a window 
  843. YYYY  win_owner        get owner of a given window 
  844. YYYYY win_paste        define window as current clipboard window 
  845. YYYYY win_point        jump mouse to logical cursor position 
  846. YYYYY win_poswin       position window relative to another window 
  847. YYYYY win_putc         write a character/attribute pair to a window 
  848. YYYYY win_printf       write formatted data to a window 
  849. YYYYY win_read         read rest of current line from window 
  850.    Y  win_readexit     determine whether Up/Down keys exit 
  851.    Y  win_readgets     enter editing mode using pending gets in a window 
  852. YYYYY win_redraw       redraw a window 
  853. YYYY  win_reorder      reorder an application's windows 
  854. YYYYY win_repattr      write an attribute to a window n times 
  855. YYYYY win_repchar      write a character to a window n times 
  856. YYYYY win_resize       set physical dimensions of a window 
  857.    Y  win_restore      display a saved window to a specified window area 
  858.    Y  win_save         save window region to memory variable 
  859. YYYYY win_scroll       scroll all or part of a window 
  860.    Y  win_setbell      determine sounding of bell during win_readgets 
  861.    Y  win_setcenter    determine centering of win_atprompt messages 
  862.    Y  win_setcolor     determine color attributes of window 
  863.    Y  win_setconfirm   determine required win_atget termination with Enter      
  864.                    key 
  865.    Y  win_setescape    determine whether Esc key terminates win_readgets 
  866.    Y  win_setintensity toggle display intensity of win_atget and win_atprompt
  867.    Y  win_setmessage   determine row and centering of win_atprompt messages
  868.    Y  win_setwrap      determine wrapping in win_menuto 
  869. YYYYY win_sizeof       get # character positions in the logical window 
  870. YYYYY win_stream       write a stream to a window 
  871. YYYYY win_subfrom      write attributes to a window 
  872. YYYYY win_title        change a window's title 
  873. YYYYY win_top          make window topmost in its application 
  874. YYYYY win_topsys       make window topmost in the system 
  875. YYYYY win_unhide       mark a window as not hidden 
  876.    Y  win_updated      determine if pending gets changed during last            
  877.                    win_readgets 
  878. YYYYY win_write        write characters to a window
  879.       
  880.       
  881.       
  882.  
  883.  
  884.  
  885.  
  886.  
  887.               YES! I'm Interested In System Development/Performance
  888. ┌───┬─────┬─────┬────────────────────────────────────────┬───────┬───────┐ 
  889. │QTY│5-1/4│3-1/2│ Product                                │ Price │ Total │ 
  890. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  891. │   │     │     │ DESQview                               │$129.95│$      │ 
  892. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  893. │   │     │     │ DESQview386 (DESQview & QEMM)          │$219.95│$      │ 
  894. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  895. │   │     │     │ Quarterdeck Manifest                   │$ 59.95│$      │ 
  896. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  897. │   │     │     │ QRAM                                   │$ 79.95│$      │ 
  898. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  899. │   │     │     │ QEMM 50/60                             │$ 99.95│$      │ 
  900. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  901. │   │     │     │ QEMM 386                               │$ 99.95│$      │ 
  902. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  903. │   │     │     │ DESQview API Debugger                  │$149.95│$      │  
  904. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  905. │   │     │     │ DESQview API Panel Design Tool         │$149.95│$      │ 
  906. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  907. │   │     │     │ DESQview API Reference                 │$ 59.95│$      │ 
  908. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  909. │   │     │     │ DESQview API Libraries (C,Pascal,      │       │$      │ 
  910. │   │     │     │          Basic,Clipper and dBase)      │$199.95│       │ 
  911. │   │     │     │                                        │       │       │ 
  912. │   │     │     │ Check One:                             │       │       │ 
  913. │   │     │     │ C( )  Clipper( ) Pascal( ) dBase( )    │       │       │ 
  914. │   │     │     │ Basic( )                               │       │       │ 
  915. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  916. │   │     │     │ DESQview API Toolkit (API Reference,   │$500.00│$      │ 
  917. │   │     │     │            Library,Panel Design Tool,  │       │       │ 
  918. │   │     │     │            Debugger, DESQview)         │       │       │ 
  919. │   │     │     │                                        │       │       │ 
  920. │   │     │     │ Check One:                             │       │       │ 
  921. │   │     │     │ C( )  Clipper( ) Pascal( ) dBase( )    │       │       │ 
  922. │   │     │     │ Basic( )                               │       │       │ 
  923. ├───┼─────┼─────┼────────────────────────────────────────┼───────┼───────┤ 
  924. │   │     │     │ DESQview by S.R. Davis (book)          │$ 29.95│$      │ 
  925. ├───┴─────┴─────┼────────────────────────────────────────┼───────┼───────┤
  926. │░░░░░░░░░░░░░░░│ Shipping & Handling                    │░░░░░░░│       │
  927. │░░░░░░░░░░░░░░░│ USA: $5                                │░░░░░░░│       │
  928. │░░░░░░░░░░░░░░░│ Outside USA: $10                       │░░░░░░░│$      │
  929. │░░░░░░░░░░░░░░░├────────────────────────────────────────┤░░░░░░░├───────┤
  930. │░░░░░░░░░░░░░░░│ Sales Tax (CA Only:%6.75)              │░░░░░░░│$      │
  931. │░░░░░░░░░░░░░░░├────────────────────────────────────────┼───────┴───────┤
  932. │░░░░░░░░░░░░░░░│ Amount                                 │$              │
  933. └───────────────┴────────────────────────────────────────┴───────────────┘
  934.                                                           
  935.                                                           
  936.  
  937.                                                           
  938.                                                           
  939. ┌────────────────────────────────────────────────────────────────────────┐
  940. │ Payment:  M/C VISA AMEX                                                │
  941. ├────────────────────────────────────────────────────────────────────────┤
  942. │ Expiration:                                                            │
  943. ├────────────────────────────────────────────────────────────────────────┤
  944. │ Card Number:                                                           │
  945. ├─────────────────────┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────────────────┤
  946. │ Name On Credit Card:│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │                  │
  947. ├─────────────────────┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴──────────────────┤
  948. │ Shipping Address:                                                      │
  949. │                                                                        │
  950. │                                                                        │
  951. ├────────────────────────────────────────────────────────────────────────┤ 
  952. │ Telephone:                                                             │
  953. ├────────────────────────────────────────────────────────────────────────┤
  954. │ Signature:                                                             │
  955. └────────────────────────────────────────────────────────────────────────┘
  956.                                                                           
  957.  
  958.                             Quaterdeck Office Systems
  959.                      150 Pico Blvd., Santa Monica, CA 90405
  960.                                   (310)314-3222
  961.                                 Fax (310)314-3219
  962.  
  963.  
  964.            
  965.  
  966.                 Copyright (C) 1990 by Quarterdeck Office Systems
  967.                      * * *   E N D   O F   F I L E    * * *
  968.  
  969.